The development of a software application is typically a multi-step process. Initially, the requirements for the software are determined. For example, a client informs a software development company of the client's requirements for the software. The client may specify the security level, type of interface, and functionality that should be included in software application. If the software is intended for a particular audience (e.g., the general public, the highly technical scientific community, children, or another type of group), then the requirements may be specified using a market research on that audience to identify feature, interface, security, and/or functionality preferences.
Next, the software development company may create a variety of documents (i.e., documentation) to use in different aspects of the development of the software. For example, the documentation may include a description of the functionality provided by the application, description of how the application may be used, descriptions of the manner in which the application is implemented, etc. Using the documentation, the software application is created.
After the creation of the software application, the application is tested by the software development company and, in some cases, the targeted audience, or a portion thereof. Based on the results of the testing, the software application may be revised and retested before being released to the targeted audience in a final version.
Further, the software development company may continue to revise and release the software application. Specifically, users of the application may detect errors in the application or may have requests for modifications of the application. Thus, the software development company may continuously correct error(s) and improve the application according to the requests. Through the release of updates and new versions, the software application is provided to the target audience. Based on feedback regarding the software application, certain features included within the application are considered valuable or popular. Accordingly, these features may be useful to keep in future versions of the software application, add the feature to existing software without such features, and/or incorporating the feature into new software applications in the future.